package com.ruoyi.patrol.mapper;

import java.util.List;

import com.ruoyi.patrol.domain.PtNotificationUser;
import com.ruoyi.patrol.domain.vo.PtNotificationUserVo;
import org.apache.ibatis.annotations.Param;

/**
 * 通知用户Mapper接口
 *
 * @author 理想三旬
 * @date 2022-11-08
 */
public interface PtNotificationUserMapper {
    /**
     * 查询通知用户
     *
     * @param id 通知用户ID
     * @return 通知用户
     */
    public PtNotificationUser selectPtNotificationUserById(Long id);

    /**
     * 查询通知用户列表
     *
     * @param ptNotificationUser 通知用户
     * @return 通知用户集合
     */
    public List<PtNotificationUser> selectPtNotificationUserList(PtNotificationUser ptNotificationUser);

    /**
     * 查询是否满足撤回条件
     *
     * @param notificationId 通知id
     * @return 已读条数
     */
    public int selectCancelCondition(@Param("notificationId") String notificationId);

    /**
     * 查询某个通知下的用户列表
     *
     * @param ptNotificationUserVo 通知id
     * @return 通知用户集合
     */
    public List<PtNotificationUserVo> selectPtNotificationUserByNotifyId(PtNotificationUserVo ptNotificationUserVo);

    /**
     * 学校管理员查看通知
     *
     * @param ptNotificationUserVo 用户id
     * @return 通知用户集合
     */
    public List<PtNotificationUserVo> selectPtNotificationUserByUserId(PtNotificationUserVo ptNotificationUserVo);

    /**
     * 查询通知包含学校id
     *
     * @param notificationId 通知id
     * @return {@link List}<{@link Long}>
     */
    public List<Long> selectPtNotificationUserSchoolId(@Param("notificationId") String notificationId);

    /**
     * 新增通知用户
     *
     * @param ptNotificationUser 通知用户
     * @return 结果
     */
    public int insertPtNotificationUser(PtNotificationUser ptNotificationUser);

    public int insertPtNotificationUserList(@Param("schoolKey") int[] schoolKey, @Param("notificationId") String notificationId, @Param("createBy") String createBy);

    /**
     * 修改通知用户
     *
     * @param ptNotificationUser 通知用户
     * @return 结果
     */
    public int updatePtNotificationUser(PtNotificationUser ptNotificationUser);

    /**
     * 删除通知用户
     *
     * @param notificationId 通知用户ID
     * @return 结果
     */
    public int deletePtNotificationUserById(String notificationId);

    /**
     * 批量删除通知用户
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deletePtNotificationUserByIds(Long[] ids);
}
